﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using ComunesMGI.Enum;
using MGI.AccesoDatos;

namespace MGI.Logica
{
    class MgrIncidentes
    {

        #region Singleton

        /// <summary>
        /// implementación de singleton para el manejador de incidentes
        /// </summary>
        static private MgrIncidentes _instance;

        /// <summary>
        /// implementación de singleton para el manejador de incidentes
        /// retorna una instancia del manejador
        /// </summary>
        /// <returns>MgrIncidentes</returns>
        static public MgrIncidentes getInstance()
        {
            if (_instance == null)
            {
                _instance = new MgrIncidentes();
            }
            return _instance;
        }

        #endregion


        public List<DataCampo> getCampos(DataCliente cliente, DataSistema sistema)
        {
            AccesoDatosFactory accesoDatos = AccesoDatosFactory.getInstance();
            IDatosIncidentes datosIncidentes = accesoDatos.getIDatosIncidentes();

            List<DataCampo> nomCampos = datosIncidentes.getCampos( cliente, sistema, Lista.Incidentes );

            ISharepoint sharepoint = accesoDatos.getISharepoint();

            return sharepoint.getCampos( cliente, sistema, Lista.Incidentes, nomCampos);
            
        }

        public DataAltaIncidente addIncidente(DataSistema incidente)
        {
            AccesoDatosFactory accesoDatos = AccesoDatosFactory.getInstance();
            ISharepoint sharepoint = accesoDatos.getISharepoint();
            return sharepoint.addIncidente(incidente);
        }

        
        public List<DataIncidente> getIncidentes(DataCliente cliente, DataSistema sistema)
        {
            AccesoDatosFactory accesoDatos = AccesoDatosFactory.getInstance();
            ISharepoint sharepoint = accesoDatos.getISharepoint();
            return sharepoint.getIncidentes( cliente, sistema);
        }

        public List<DataTarea> getTareas(DataCliente cliente, DataSistema sistema, DataIncidente incidente)
        {
            AccesoDatosFactory accesoDatos = AccesoDatosFactory.getInstance();
            ISharepoint sharepoint = accesoDatos.getISharepoint();
            return sharepoint.getTareas(cliente, sistema, incidente);
        }

        public bool asignarResponsable(DataSistema sistema, DataIncidente incidente, DataTarea tarea, DataUsuario usuario)
        {
            AccesoDatosFactory accesoDatos = AccesoDatosFactory.getInstance();
            ISharepoint sharepoint = accesoDatos.getISharepoint();
            return sharepoint.asignarResponsable(sistema, incidente, tarea, usuario);
        }
    }
}
